//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "MTAG_EIC.h"
#include "uListeLangues.h"

#define MODULE_TAG MTAG_ULISTELANGUES
//---------------------------------------------------------------------------

#pragma package(smart_init)

__fastcall TListeLangues::TListeLangues()
{
const TLangue TabLangues[] = {{ lngFRANCAIS, "Français"},
                              { lngANGLAIS , "Anglais" },
                              { lngALLEMAND, "Allemand"},
                              {(IDLangue)0, ""      }};
try
   {
   slLangues = new TStringList;

   for (int i=0 ; TabLangues[i].szNomLangue[0] != '\0' ; i++)
      slLangues->AddObject(TabLangues[i].szNomLangue, (TObject*)TabLangues[i].ID);
   }
catch(Exception &e)
   {
   EICDisplayException(TAG(10), e);
   }
}

__fastcall TListeLangues::~TListeLangues()
{
delete slLangues;     slLangues = NULL;
}

TLangue __fastcall TListeLangues::GetTabLangues(short shItem) const 
{
TLangue sLangue;

try
   {
   sLangue.ID          = (IDLangue)slLangues->Objects[shItem];
   sLangue.szNomLangue = slLangues->Strings[shItem].c_str();
   }
catch(Exception &e)
   {
   EICDisplayException(TAG(30), e);
   }
return sLangue;
}

/*******************************************************************************

Fonction :

Paramètres d'entrée :

Paramètres de sortie :

Valeur retournée :
*******************************************************************************/
short __fastcall TListeLangues::GetCount() const
{
return slLangues->Count;
}

/*******************************************************************************

Fonction :

Paramètres d'entrée :

Paramètres de sortie :

Valeur retournée :
*******************************************************************************/
IDLangue __fastcall TListeLangues::NomLangueToID(const AnsiString &aNomLangue) const
{
short shIndice;
try
   {
   if ((shIndice = slLangues->IndexOf(aNomLangue)) == -1)
      return lngInconnue;
   else
      return (IDLangue)slLangues->Objects[shIndice];
   }
catch(Exception &e)
   {
   throw EUser(TAG(50), e);
   }
}
/*******************************************************************************

Fonction :

Paramètres d'entrée :

Paramètres de sortie :

Valeur retournée :
*******************************************************************************/
AnsiString __fastcall TListeLangues::IDToNomLangue(IDLangue eIDLangue) const
{
short shIndice;
AnsiString aNomLangue;
try
   {
   if ((shIndice = slLangues->IndexOfObject((TObject*)eIDLangue)) == -1)
      aNomLangue = EmptyStr;
   else
      aNomLangue = slLangues->Strings[shIndice];
   }
catch(Exception &e)
   {
   throw EUser(TAG(60), e);
   }
return aNomLangue;
}
